//
//  MoteurTest.m
//  Metronome
//
//  Created by Pierre DUCHÊNE on 21/10/09.
//  Copyright 2009 GreenTeam. All rights reserved.
//

#import "MoteurTest.h"
#import "Moteur.h"
#import "MetronomeKit.h"


@implementation MoteurTest

- (void)setUp
{
	moteurTest = [[Moteur alloc] init];
}
- (void)tearDown
{
	[moteurTest release];
}

- (void)testInit
{
	BOOL bonTempo = moteurTest.tempo == kMinTempo;
	BOOL bonTempsParMesure = moteurTest.nbTempsParMesure == kDefaultNbTempsParMesure;
	BOOL bonEtat = [moteurTest estEnMarche];
	STAssertTrue(bonTempo,@"Le tempo n'a pas la bonne valeur à l'initialisation");
	STAssertTrue(bonTempsParMesure,@"Le temps par mesure n'a pas la bonne valeur à l'initialisation");
	STAssertFalse(bonEtat,@"L'état n'a pas la bonne valeur à l'initialisation");
}

- (void)testTempo
{
	// On change le tempo puis on vérifie que la valeur est bonne
	[moteurTest setTempo:30];
	BOOL bonTempo = moteurTest.tempo == 30;
	STAssertTrue(bonTempo,@"Erreur de valeur du tempo");
}

- (void)testSetTempoOK
{
	// On modifie le tempo avec une valeur possible
	[moteurTest setTempo:50];
	BOOL bonTempo = moteurTest.tempo == 50;
	STAssertTrue(bonTempo,@"Erreur de valeur du tempo");
}

- (void)testSetTempoNOKInf
{
	// On modifie le tempo avec une valeur trop basse
	[moteurTest setTempo:kMinTempo-33];
	BOOL bonTempo = moteurTest.tempo == kMinTempo;
	STAssertTrue(bonTempo,@"Erreur de valeur du tempo");
}

- (void)testSetTempoNOKSup
{
	// On modifie le tempo avec une valeur trop basse
	[moteurTest setTempo:kMaxTempo+122];
	BOOL bonTempo = moteurTest.tempo == kMaxTempo;
	STAssertTrue(bonTempo,@"Erreur de valeur du tempo");
}

- (void)testSetNbTempsParMesureOK
{
	// On modifie le nombre de mesure avec une valeur acceptable
	NSInteger i = 5;
	[moteurTest setNbTempsParMesure:i];
	BOOL bonneMesure = [moteurTest nbTempsParMesure] == i;
	STAssertTrue(bonneMesure,@"Erreur mauvaise valeur de mesure");
}

- (void)testSetNbTempsParMesureNOKInf
{
	// On modifie le nombre de mesure avec une valeur trop basse
	NSInteger i = kMinMesure-12;
	[moteurTest setNbTempsParMesure:i];
	BOOL bonneMesure = [moteurTest nbTempsParMesure] == kMinMesure;
	STAssertTrue(bonneMesure,@"Erreur mauvaise valeur de mesure");
}

- (void)testSetNbTempsParMesureNOKSup
{
	// On modifie le nombre de mesure avec une valeur trop basse
	NSInteger i = kMaxMesure+12;
	[moteurTest setNbTempsParMesure:i];
	BOOL bonneMesure = [moteurTest nbTempsParMesure] == kMaxMesure;
	STAssertTrue(bonneMesure,@"Erreur mauvaise valeur de mesure");
}

@end
